/**
 * @file risk_manager.cpp
 * @brief 风险管理器的实现
 * 
 * @details 该文件实现了风险管理器（RiskManager）类的方法，
 * 主要包括风险管理器的初始化过程。
 * 风险管理器负责对交易前的风险进行检查，确保交易在安全的风险参数范围内进行。
 * 
 * @author 原作者
 * @date 2023
 */

#include "risk_manager.h"

#include "order_manager.h"

namespace Trading {
  /**
   * @brief 风险管理器的构造函数实现
   * 
   * @details 初始化风险管理器，设置日志记录器并初始化所有交易工具的风险信息。
   * 对每个交易工具，设置其仓位信息指针和风险配置。
   * 仓位信息指针指向仓位管理器中对应的仓位信息对象。
   * 风险配置从交易引擎配置中获取。
   * 
   * @param logger 日志记录器指针，用于记录风险管理器的操作和状态
   * @param position_keeper 仓位管理器指针，用于获取各交易工具的仓位信息
   * @param ticker_cfg 交易引擎配置映射，包含各交易工具的风险配置
   */
  RiskManager::RiskManager(Common::Logger *logger, const PositionKeeper *position_keeper, const TradeEngineCfgHashMap &ticker_cfg)
      : logger_(logger) {
    for (TickerId i = 0; i < ME_MAX_TICKERS; ++i) {
      ticker_risk_.at(i).position_info_ = position_keeper->getPositionInfo(i);
      ticker_risk_.at(i).risk_cfg_ = ticker_cfg[i].risk_cfg_;
    }
  }
}
